package fachada;

import java.io.IOException;
import java.util.LinkedList;

import comunicacao.Comunicacao;
import comunicacao.DestinoDesconhecidoException;
import comunicacao.Mensagem;
import comunicacao.ServidorTCP;

import controle.ControladorChat;
import controle.Jogo;

public class Fachada {
	private Jogo jogo;
	private Comunicacao comunicacao;
	private ControladorChat chat;
	
	public Fachada(int numeroJogadores, int porta, String nomePartida) throws IOException {
		this.jogo = new Jogo(this, numeroJogadores);
		this.comunicacao = new ServidorTCP(porta, this, nomePartida, numeroJogadores);
		this.chat= new ControladorChat(this);
	}
	
	public void atualizar(Mensagem mensagem) throws DestinoDesconhecidoException, IOException {
		this.comunicacao.enviar(mensagem);
	}
	
	public void passarVez() throws DestinoDesconhecidoException, IOException {
		this.jogo.passarVez();
	}
	
	public void jogarNovamente() throws DestinoDesconhecidoException, IOException {
		this.jogo.jogarNovamente();
	}
	
	public void adicionarjogador(String cor) throws DestinoDesconhecidoException, IOException {
		this.jogo.adicionaJogador(cor);
	}
	
	public void rodarDados() throws DestinoDesconhecidoException, IOException {
		this.jogo.iniciarJogada();
	}
	
	public void comprar() throws DestinoDesconhecidoException, IOException {
		this.jogo.comprar();
	}
	public void hipotecar() {
		this.jogo.hipotecar();
	}
	public void construir() {
		this.jogo.construir();
	}
	public void leiloar() {
		this.jogo.leiloar();
	}
	public void realizarTransacao() {
		this.realizarTransacao();
	}
	public void enviarMsgChat(Mensagem mensagem) throws DestinoDesconhecidoException, IOException {
		this.chat.enviarMsgChat(mensagem);
	}

	public LinkedList<String> getJogadores() {
		return jogo.getJogadores();
	}
}
